#define _CRT_SECURE_NO_WARNINGS
//#include <iostream>
//#include <unordered_map>
//#include <string>
//using namespace std;
//
//unordered_map <string,int> mp;
//int main()
//{
//	int n; cin >> n;
//	string name;
//	while (n--)
//	{
//		int op; cin >> op;
//		if (op == 1)
//		{
//			cin >> name;
//			int sco; cin >> sco;
//			mp[name] = sco;
//			cout << "OK" << endl;
//		}
//		if (op == 2)
//		{
//			cin >> name;
//			if (mp.count(name))  
//			{
//				cout << mp[name] << endl;
//			}
//			else cout << "Not found" << endl;
//		}
//		if (op == 3)
//		{
//			cin >> name;
//			if (mp.count(name))
//			{
//				mp.erase(name);
//				cout << "Deleted successfully" << endl;
//			}
//			else cout << "Not found" << endl;
//		}
//		if (op == 4)
//		{
//			cout << mp.size() << endl; 
//		}
//	}
//	return 0;
//}

//#include <iostream>
//#include <unordered_set>
//using namespace std;
//
//
//int main()
//{
//	int t; scanf("%d",&t);
//	while (t--)
//	{
//		int n; scanf("%d",&n);
//		unordered_set <int> mp;
//		for (int i = 1; i <= n; i++)
//		{
//			int x; scanf("%d",&x);
//			if (!mp.count(x))
//			{
//				mp.insert(x);
//				cout << x << " ";
//			}
//		}
//		cout << endl;
//	}
//	return 0;
// } 

//#include <iostream>
//#include <set>
//#include <string>
//#include <unordered_map>
//using namespace std;
//
//unordered_map <string, set<int>> mp;
//int main()
//{
//	string word; 
//	int n; cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		int l; cin >> l;
//		while (l--)
//		{
//			cin >> word;
//			mp[word].insert(i); 
//		}
//	}
//	int m; cin >> m;
//		while (m--)
//		{
//			cin >> word;
//			for (auto e : mp[word])
//			{
//				cout << e << " ";
//			}
//			cout << endl;
//		}
//	return 0;
//}
//#include <iostream>
//#include <unordered_map>
//using namespace std;
//
//typedef long long LL;
//const int N = 2e5 + 10;
//unordered_map <LL,int> a;
//LL b[N] = {0};
//int main()
//{
//	int n;
//	LL c; cin >> n >> c;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> b[i];
//		a[b[i]]++;
//	}
//	LL cont = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		cont += a[b[i]+c];
//	}
//	cout << cont << endl;
//	
//	return 0;
//}

#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;

unordered_map <string, int> mp;

int main()
{
	int n; cin >> n;
	string cit, sta;
	int ret = 0;
	while (n--)
	{
		cin >> cit >> sta;
		cit = cit.substr(0, 2);
		if (cit == sta) continue;
		ret += mp[sta + cit];
		mp[cit + sta]++;
	}
	cout << ret << endl;
	return 0;
}

